#include<stdio.h>
#include<stdlib.h>

int TOTAL_STATION = 5;								//全局变量
int STRATEGY = 1;
int DISTANCE = 2;
int outtarget[10] = { 0 };							//初始化二进制数组
int outclockwise[10] = { 0 };
int outcounterclockwise[10] = { 0 };


struct status										//公交车状态结构体
{
	int bus_position;                                //1为顺时针，2为逆时针
	int bus_direction;
	int bus_status;
}Bus;

void readfile(void)									//读取配置文件 
{
	FILE *fp;
													
	if((fp=fopen("dict.dic","r"))==NULL)			//打开文本文件
    {
    printf("ERROR in opening the \"dict.dic\"\n");
    exit(1);
    }
	char ch[20];									//设置一个字符串用于读取参数
				
    while(fgets(ch,30,fp))
	{
		if(ch[0]=='#')								//如果开头是'#'，则注释掉本行 
		{
			continue;
		}
		else if(ch[0]=='T')							//如果开头是'T'，则为TOTAL_STATION参数，读取站点总数，若无则为初始定义
		{
			if(ch[16] == '1')						//第16个字符为数字字符部分，且数字范围为2~10，如果第一位数字字符为1，则该参数必定为10 
			TOTAL_STATION = 10;
			else									//如果第16个字符不是1，则该数字字符所代表的数字即为参数 
			TOTAL_STATION = ch[16]-'0';
		}
		else if(ch[0]=='S')							//如果开头是'S'，则为STRATEGY参数，读取策略，若无则为初始定义
		{
			if(ch[13]=='F')							//第13个字符为几个策略名称中不同的字母部分，以此作为区分 ，1为FCFS（先来先服务），2为SSTF（最短寻找时间优先），3为SCAN（顺便服务）
			STRATEGY = 1;							
			else if(ch[13]=='T')
			STRATEGY = 2;
			else if(ch[13]=='A')
			STRATEGY = 3;
		}
		else if(ch[0]=='D')     					//如果开头是'D'，则为DISTANCE参数，读取每站之间的距离，若无则为初始定义,该参数范围为1~5 
		{
			DISTANCE = ch[11]-'0';
		}
	}
  	if(fclose(fp)!=0)								//关闭文件
	{
    	printf("ERROR in closing the \"dict.dic\"\n");
    	exit(2);
	}
}

void output()										//输出函数
{
	printf("BUS:\n");								//开始输出公交状态信息
	printf("position: %d\n", Bus.bus_position);		//公交位置
	printf("target: ");								//公交目的站点（二进制表示）
	for (int i = 0; i < TOTAL_STATION; i++)
		printf("%d", outtarget[i]);
	printf("\n");
	
	printf("STATION:\n");							//开始输出站点请求信息
	printf("clockwise: ");							//顺时针乘坐车辆请求站点（二进制）
	for (int i = 0; i < TOTAL_STATION; i++)
		printf("%d", outclockwise[i]);
	printf("\n");
	printf("counterclockwise: ");					//逆时针乘坐车辆请求站点（二进制）
	for (int i = 0; i < TOTAL_STATION; i++)
		printf("%d", outcounterclockwise[i]);
	printf("\n");

}
